﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL.Interfejsi;
using source;
using MySql.Data.MySqlClient;

namespace DAL
{
    partial class DAL
    {
        public class OcjenaZakljucnaDAO : IDaoCrud<OcjenaZakljucna>
        {
            #region IDaoCrud<OcjenaZakljucna> Members
            protected MySqlCommand c;
            public long create(OcjenaZakljucna entity)
            {
                try
                {
                    c = new MySqlCommand("insert into ocjena_zakljucna (ucenik_id, predmet_id, skolska_godina_id, polugodiste, vrijednost, dodatne_napomene) values (@UcenikID, @PredmetID, @SkolskaGodinaID, @Polugodiste, @Vrijednost, @DodatneNapomene);", con);
                    c.Parameters.AddWithValue("@UcenikID", entity.UcenikID);
                    c.Parameters.AddWithValue("@PredmetID", entity.PredmetID);
                    c.Parameters.AddWithValue("@SkolskaGodinaID", entity.SkolskaGodinaID);
                    c.Parameters.AddWithValue("@Polugodiste", entity.Polugodiste);
                    c.Parameters.AddWithValue("@Vrijednost", entity.Vrijednost);
                    c.Parameters.AddWithValue("@DodatneNapomene", entity.DodatneNapomene);
                    c.ExecuteNonQuery();
                    return c.LastInsertedId;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public List<OcjenaZakljucna> getAll()
            {
                try
                {
                    c = new MySqlCommand("select * from ocjena_zakljucna;", con);
                    MySqlDataReader r = c.ExecuteReader();
                    List<OcjenaZakljucna> ocjeneZakljucne = new List<OcjenaZakljucna>();
                    while (r.Read())
                    {
                        OcjenaZakljucna ocjenaZakljucna = new OcjenaZakljucna();
                        ocjenaZakljucna.ID = r.GetInt32("id");
                        ocjenaZakljucna.UcenikID = r.GetInt32("ucenik_id");
                        ocjenaZakljucna.PredmetID = r.GetInt32("predmet_id");
                        ocjenaZakljucna.SkolskaGodinaID = r.GetInt32("skolska_godina_id");
                        ocjenaZakljucna.Polugodiste = r.GetBoolean("polugodiste");
                        ocjenaZakljucna.Vrijednost = r.GetInt32("vrijednost");
                        ocjenaZakljucna.DodatneNapomene = r.GetString("dodatne_napomene");
                        ocjeneZakljucne.Add(ocjenaZakljucna);
                    }
                    return ocjeneZakljucne;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public OcjenaZakljucna read(OcjenaZakljucna entity)
            {
                try
                {
                    c = new MySqlCommand("select * from ocjena_zakljucna where id = @ID;", con);
                    c.Parameters.AddWithValue("@ID", entity.ID);
                    MySqlDataReader r = c.ExecuteReader();
                    OcjenaZakljucna ocjenaZakljucna = new OcjenaZakljucna();
                    if (r.Read())
                    {
                        ocjenaZakljucna.ID = r.GetInt32("id");
                        ocjenaZakljucna.UcenikID = r.GetInt32("ucenik_id");
                        ocjenaZakljucna.PredmetID = r.GetInt32("predmet_id");
                        ocjenaZakljucna.SkolskaGodinaID = r.GetInt32("skolska_godina_id");
                        ocjenaZakljucna.Polugodiste = r.GetBoolean("polugodiste");
                        ocjenaZakljucna.Vrijednost = r.GetInt32("vrijednost");
                        ocjenaZakljucna.DodatneNapomene = r.GetString("dodatne_napomene");
                    }
                    return ocjenaZakljucna;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public OcjenaZakljucna update(OcjenaZakljucna entity)
            {
                try
                {
                    c = new MySqlCommand("UPDATE ocjena_zakljucna SET ucenik_id = @UcenikID, predmet_id = @PredmetID, skolska_godina_id = @SkolskaGodinaID, polugodiste = @Polugodiste, vrijednost = @Vrijednost, dodatne_napomene = @DodatneNapomene where id = @ID;", con);
                    c.Parameters.AddWithValue("@UcenikID", entity.UcenikID);
                    c.Parameters.AddWithValue("@PredmetID", entity.PredmetID);
                    c.Parameters.AddWithValue("@SkolskaGodinaID", entity.SkolskaGodinaID);
                    c.Parameters.AddWithValue("@Polugodiste", entity.Polugodiste);
                    c.Parameters.AddWithValue("@Vrijednost", entity.Vrijednost);
                    c.Parameters.AddWithValue("@DodatneNapomene", entity.DodatneNapomene);
                    c.Parameters.AddWithValue("@ID", entity.ID);
                    c.ExecuteNonQuery();
                    return entity;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public void delete(OcjenaZakljucna entity)
            {
                try
                {
                    c = new MySqlCommand("delete from ocjena_zakljucna where id = @ID;", con);
                    c.Parameters.AddWithValue("@ID", entity.ID);
                    c.ExecuteNonQuery();
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public OcjenaZakljucna getById(int id)
            {
                try
                {
                    c = new MySqlCommand("select * from ocjena_zakljucna where id = @ID;", con);
                    c.Parameters.AddWithValue("@ID", id);
                    MySqlDataReader r = c.ExecuteReader();
                    OcjenaZakljucna ocjenaZakljucna = new OcjenaZakljucna();
                    if (r.Read())
                    {
                        ocjenaZakljucna.ID = r.GetInt32("id");
                        ocjenaZakljucna.UcenikID = r.GetInt32("ucenik_id");
                        ocjenaZakljucna.PredmetID = r.GetInt32("predmet_id");
                        ocjenaZakljucna.SkolskaGodinaID = r.GetInt32("skolska_godina_id");
                        ocjenaZakljucna.Polugodiste = r.GetBoolean("polugodiste");
                        ocjenaZakljucna.Vrijednost = r.GetInt32("vrijednost");
                        ocjenaZakljucna.DodatneNapomene = r.GetString("dodatne_napomene");
                    }
                    return ocjenaZakljucna;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
        
            public List<OcjenaZakljucna> getByExample(string name, string value)
            {
                try
                {
                    c = new MySqlCommand("select * from ocjena_zakljucna where @Kolona = @Vrijednost;", con);
                    c.Parameters.AddWithValue("@Kolona", name);
                    c.Parameters.AddWithValue("@Vrijednost", value);
                    MySqlDataReader r = c.ExecuteReader();
                    List<OcjenaZakljucna> ocjeneZakljucne = new List<OcjenaZakljucna>();
                    while (r.Read())
                    {
                        OcjenaZakljucna ocjenaZakljucna = new OcjenaZakljucna();
                        ocjenaZakljucna.ID = r.GetInt32("id");
                        ocjenaZakljucna.UcenikID = r.GetInt32("ucenik_id");
                        ocjenaZakljucna.PredmetID = r.GetInt32("predmet_id");
                        ocjenaZakljucna.SkolskaGodinaID = r.GetInt32("skolska_godina_id");
                        ocjenaZakljucna.Polugodiste = r.GetBoolean("polugodiste");
                        ocjenaZakljucna.Vrijednost = r.GetInt32("vrijednost");
                        ocjenaZakljucna.DodatneNapomene = r.GetString("dodatne_napomene");
                        ocjeneZakljucne.Add(ocjenaZakljucna);
                    }
                    return ocjeneZakljucne;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
            #endregion
        }
    }
}
